গুয়াভা (Guava) লাইব্রেরি Java-তে Range এর ধারণাকে সহজ এবং কার্যকরীভাবে পরিচালনা করার জন্য বিভিন্ন ইউটিলিটি প্রদান করে। Range বা সীমা (Range) হলো একটি নির্দিষ্ট শুরু এবং শেষের মধ্যে সীমাবদ্ধ একটি পরিসর। Guava লাইব্রেরিতে Open, Closed, এবং Half-open রেঞ্জের ধারণাগুলি অত্যন্ত শক্তিশালী এবং কার্যকরীভাবে ব্যবহৃত হয়। এই ধারণাগুলির মাধ্যমে আমরা যে কোনো রেঞ্জের অন্তর্ভুক্তি বা নিষ্ক্রিয়তা সহজে নির্ধারণ করতে পারি, যেমন শুরু এবং শেষ সীমা অন্তর্ভুক্ত থাকবে কি না।
1. Closed Range (সীমাবদ্ধ)
Closed range একটি রেঞ্জ যেখানে শুরু এবং শেষ উভয়ই অন্তর্ভুক্ত থাকে। অর্থাৎ, এই রেঞ্জে শুরু এবং শেষের মানও গ্রহণযোগ্য। উদাহরণস্বরূপ, একটি রেঞ্জ [1, 5] শুরুতে ১ এবং শেষে ৫ অন্তর্ভুক্ত।
গুয়াভা লাইব্রেরিতে Range.closed() মেথডটি একটি closed range তৈরি করতে ব্যবহৃত হয়।
উদাহরণ:
import com.google.common.collect.Range;
public class RangeExample {
public static void main(String[] args) {
// Creating a closed range [1, 5]
Range<Integer> closedRange = Range.closed(1, 5);
// Checking if a value is within the range
System.out.println(closedRange.contains(1)); // true
System.out.println(closedRange.contains(5)); // true
System.out.println(closedRange.contains(3)); // true
System.out.println(closedRange.contains(6)); // false
}
}
এখানে, Range.closed(1, 5) একটি বন্ধ রেঞ্জ তৈরি করেছে, যেখানে ১ এবং ৫ উভয়ই অন্তর্ভুক্ত।
2. Open Range (খোলা)
Open range একটি রেঞ্জ যেখানে শুরু এবং শেষ উভয়ই অন্তর্ভুক্ত নয়। অর্থাৎ, শুরু এবং শেষের মানের বাইরে মানগুলোই রেঞ্জের মধ্যে পড়বে। উদাহরণস্বরূপ, একটি রেঞ্জ (1, 5) যেখানে ১ এবং ৫ অন্তর্ভুক্ত নয়, তবে ১ এর বেশি এবং ৫ এর কম মানগুলো অন্তর্ভুক্ত থাকবে।
গুয়াভা লাইব্রেরিতে Range.open() মেথডটি একটি open range তৈরি করতে ব্যবহৃত হয়।
উদাহরণ:
import com.google.common.collect.Range;
public class RangeExample {
public static void main(String[] args) {
// Creating an open range (1, 5)
Range<Integer> openRange = Range.open(1, 5);
// Checking if a value is within the range
System.out.println(openRange.contains(1)); // false
System.out.println(openRange.contains(5)); // false
System.out.println(openRange.contains(3)); // true
System.out.println(openRange.contains(6)); // false
}
}
এখানে, Range.open(1, 5) একটি খোলা রেঞ্জ তৈরি করেছে, যেখানে ১ এবং ৫ উভয়ই অন্তর্ভুক্ত নয়, কিন্তু ৩ অন্তর্ভুক্ত।
3. Half-open Range (অর্ধ-খোলা)
Half-open range একটি রেঞ্জ যেখানে শুরু অন্তর্ভুক্ত থাকে, কিন্তু শেষ অন্তর্ভুক্ত থাকে না। অর্থাৎ, রেঞ্জটি শুরু থেকে শেষের আগ পর্যন্ত মানগুলো গ্রহণ করবে, কিন্তু শেষের মানটি গ্রহণ করবে না। উদাহরণস্বরূপ, একটি রেঞ্জ [1, 5) যেখানে ১ অন্তর্ভুক্ত থাকবে কিন্তু ৫ থাকবে না।
গুয়াভা লাইব্রেরিতে Range.closedOpen() এবং Range.openClosed() মেথডগুলি অর্ধ-খোলা রেঞ্জ তৈরি করতে ব্যবহৃত হয়।
উদাহরণ:
import com.google.common.collect.Range;
public class RangeExample {
public static void main(String[] args) {
// Creating a half-open range [1, 5)
Range<Integer> halfOpenRange = Range.closedOpen(1, 5);
// Checking if a value is within the range
System.out.println(halfOpenRange.contains(1)); // true
System.out.println(halfOpenRange.contains(5)); // false
System.out.println(halfOpenRange.contains(3)); // true
System.out.println(halfOpenRange.contains(6)); // false
}
}
এখানে, Range.closedOpen(1, 5) একটি অর্ধ-খোলা রেঞ্জ তৈরি করেছে, যেখানে ১ অন্তর্ভুক্ত থাকবে কিন্তু ৫ থাকবে না।
4. Range এর সাধারণ ব্যবহার
গুয়াভা লাইব্রেরির Range ক্লাসটি বিভিন্ন কার্যক্রমে ব্যবহার করা যেতে পারে, যেমন:
- ফিল্টারিং: একটি রেঞ্জের মধ্যে থাকা উপাদানগুলো ফিল্টার করা।
- সংখ্যা সীমা নির্ধারণ: কোন দুটি সংখ্যা সীমার মধ্যে পড়ছে কিনা তা চেক করা।
- প্রতিটি মানের উপর অপারেশন: একটি নির্দিষ্ট রেঞ্জের মধ্যে থাকা প্রতিটি মানের উপর অপারেশন সম্পাদন করা।
উদাহরণ:
import com.google.common.collect.Range;
public class RangeExample {
public static void main(String[] args) {
// Creating a range [1, 10)
Range<Integer> range = Range.closedOpen(1, 10);
// Checking if a value is within the range
if (range.contains(5)) {
System.out.println("5 is within the range");
} else {
System.out.println("5 is not within the range");
}
// Checking if two ranges overlap
Range<Integer> range2 = Range.closed(8, 12);
System.out.println(range.isConnected(range2)); // true (the ranges overlap)
}
}
এখানে, range.isConnected(range2) চেক করছে যে দুটি রেঞ্জ কি একে অপরকে স্পর্শ করছে বা ওভারল্যাপ করছে।
উপকারিতা
- কোডের পরিষ্কারতা: বিভিন্ন ধরনের রেঞ্জ (open, closed, half-open) ব্যবহার করে কোড আরও পরিষ্কার এবং সুনির্দিষ্ট হয়।
- সীমা নির্ধারণ: নির্দিষ্ট সীমার মধ্যে উপাদানগুলিকে সহজে চিহ্নিত করা যায়।
- পারফরম্যান্স: রেঞ্জের মধ্যে থাকা উপাদানগুলোর উপর কার্যকরীভাবে অপারেশন সম্পাদন করা যায়।
সারাংশ
গুয়াভা লাইব্রেরির Range ক্লাসটি Java-তে রেঞ্জ পরিচালনার জন্য একটি শক্তিশালী টুল। এটি open, closed, এবং half-open রেঞ্জের ধারণাগুলি সমর্থন করে, যা কোডের মধ্যে শুরু এবং শেষ সীমার অন্তর্ভুক্তি বা নিষ্ক্রিয়তা নির্ধারণ করতে সাহায্য করে। এই রেঞ্জগুলি ব্যবহার করে আপনি খুব সহজেই সংখ্যার সীমা চিহ্নিত করতে পারেন এবং রেঞ্জের মধ্যে থাকা উপাদানগুলোর উপর বিভিন্ন কার্যক্রম পরিচালনা করতে পারেন।
Read more